package com.cchc.k8s.request;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.Map;

/**
 * file：CreateDeploymentRequest.java
 * description: 创建Deployment请求
 * date: 2021-09-18 17:42
 * author: wenrui
 * version: 1.0
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
public class CreateDeploymentRequest {
    /**
     * 应用名称
     */
    private String appName;
    /**
     * 应用版本
     */
    private String appVersion;
    /**
     * 应用端口
     */
    private Integer appPort;
    /**
     * 应用部署数量
     */
    private Integer appReplicas;
    /**
     * 环境变量列表
     */
    private List<Map<String, String>> envList;
    /**
     * 资源限制 cpu，内存
     */
    private ResourceRequest resourceRequest;

    /**
     * 在K8s的资源：
     * 　CPU：
     * 　　我们知道2核2线程的CPU，可被系统识别为4个逻辑CPU，在K8s中对CPU的分配限制是对逻辑CPU做分片限制的。
     * 　　也就是说分配给容器一个CPU，实际是分配一个逻辑CPU。
     * 　　而且1个逻辑CPU还可被单独划分子单位，即 1个逻辑CPU，还可被划分为1000个millicore(毫核), 简单说就是1个逻辑CPU，继续逻辑分割为1000个豪核心。
     * 　　豪核：可简单理解为将CPU的时间片做逻辑分割，每一段时间片就是一个豪核心。
     * 　　所以：500m 就是500豪核心，即0.5个逻辑CPU.
     *
     * 　内存:
     * 　　K，M，G，T，P，E #通常这些单位是以1000为换算标准的。
     * 　　Ki, Mi, Gi, Ti, Pi, Ei #这些通常是以1024为换算标准的。
     */
    @Data
    public static class ResourceRequest {
        /**
         * 内存需求限制
         */
        private String memoryRequest;
        /**
         * cpu需求限制
         */
        private String cpuRequest;
        /**
         * 内存最大限制
         */
        private String memoryLimit;
        /**
         * cpu最大限制
         */
        private String cpuLimit;
    }
}
